//TODO es6类的 原形上的属性是不可以被迭代的
/*class A{
  get a(){
    return 'a'
  }
  get b(){
    return 'b';
  }
}
for (let i in A.prototype){
  console.log('---');
  console.log(A.prototype[i]);
  //一个都不会输出
}

console.log(A.prototype.hasOwnProperty('a')); //true
console.log(A.prototype.a); //a*/



/*function A(){

}

A.prototype.a = 'a'; //默认在原形上定义的属性是可以被迭代的
A.prototype.b = 'b';

// Object.defineProperty(A.prototype,'a',{enumerable:false,value:'a'}) //我们这里强制让它不能够被迭代
// Object.defineProperty(A.prototype,'b',{enumerable:true,value:'b'})

for (let i in A.prototype){
  console.log('---');
  console.log(A.prototype[i]);
}

console.log(A.prototype.a);*/


//TODO es6类的 静态属性也是不可以被迭代的
// 但A.x A.y 这样定义是可以被迭代的
/*
class A{
  static get x(){
    return 'x'
  }
  static get y(){
    return 'y'
  }
}
for (let i in A){
  console.log('---');
  console.log(A[i]);
  //一个都不会输出
}
*/

function A(){}
// A.x = 'x'
// A.y = 'y'
Object.defineProperty(A,'x',{enumerable:true,value:'x'})
Object.defineProperty(A,'y',{enumerable:true,value:'y'})
for (let i in A){
  console.log('---');
  console.log(A[i]);
}
console.log(A.x);
